package com.cskaoyan._02interface._03use;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/11 11:18
 **/
/*
接口的使用
    1.子类是普通类,要求实现接口中的所有的抽象方法
    2.子类是抽象类,子类可以自由实现
    3.接口可以继承一个接口，并且接口在继承接口后，
    可以选择重写父接口中的抽象方法和默认方法

 **extends VS implements：**

- 继承（extends）是不能跨越种族的，类和类继承，接口和接口继承，接口和类之间没有继承关系。
  - 普通类继承一个抽象类，需要实现里面的所有抽象方法。
  - 抽象类继承一个抽象类，按需实现里面的抽象方法。
  - 抽象类继承一个普通类，是可以的。
  - 接口在继承一个接口后，会得到接口的所有抽象方法。
  - 类的继承是单继承的，接口的继承是多继承的。
- 实现（implements），必须发现在类与接口之间，接口和类是没有任何关系的。
  - 普通类实现接口，必须实现所有抽象方法
  - 抽象类实现接口，按需实现抽象方法
 */
public class Demo {
    public static void main(String[] args) {

    }
}
interface IA{
    void m1();
    void m2();
}

class IAImpl implements IA{

    @Override
    public void m1() {

    }

    @Override
    public void m2() {

    }
}

abstract class BaseA implements IA{

    @Override
    public void m1() {

    }
}

interface IB extends IA{

    @Override
    default void m2() {

    }
}